Replace uses of graphene_matrix_transform_
authorMatthias Clasen <mclasen@redhat.com>
Tue, 1 Sep 2020 12:54:01 +0000 (08:54 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 1 Sep 2020 13:18:38 +0000 (09:18 -0400)
Replace our uses of graphene_matrix_transform_point,
_point3d and _bounds by our own versions that handle
projective transforms correctly.

This fixes render node bounds being incorrect for widgets
involving projective transforms (e.g. testrevealer swing
transformations), and also fixes picking on such widgets.

gsk/gsktransform.c
gtk/gtkwidget.c

index feaec991873321bb1d028f9f4ae7b139925f62f6..337a27ed12fa9be72ab9042f9d50efd3f7b8910a 100644 (file)
@@ -1822,7 +1822,7 @@ gsk_transform_transform_bounds (GskTransform          *self,
         graphene_matrix_t mat;
 
         gsk_transform_to_matrix (self, &mat);
-        graphene_matrix_transform_bounds (&mat, rect, out_rect);
+        gsk_matrix_transform_bounds (&mat, rect, out_rect);
       }
       break;
     }
@@ -1878,7 +1878,7 @@ gsk_transform_transform_point (GskTransform           *self,
         graphene_matrix_t mat;
 
         gsk_transform_to_matrix (self, &mat);
-        graphene_matrix_transform_point (&mat, point, out_point);
+        gsk_matrix_transform_point (&mat, point, out_point);
       }
       break;
     }
index e8106fca8400c854069bfabaa598d8fa39add764..ccc085256c7515db1e55e520734dc0bfb87b3025 100644 (file)
@@ -4050,7 +4050,7 @@ gtk_widget_compute_point (GtkWidget              *widget,
       return FALSE;
     }
 
-  graphene_matrix_transform_point (&transform, point, out_point);
+  gsk_matrix_transform_point (&transform, point, out_point);
 
   return TRUE;
 }
@@ -9370,8 +9370,8 @@ gtk_widget_do_pick (GtkWidget    *widget,
               gsk_transform_unref (transform);
               graphene_point3d_init (&p0, x, y, 0);
               graphene_point3d_init (&p1, x, y, 1);
-              graphene_matrix_transform_point3d (&inv, &p0, &p0);
-              graphene_matrix_transform_point3d (&inv, &p1, &p1);
+              gsk_matrix_transform_point3d (&inv, &p0, &p0);
+              gsk_matrix_transform_point3d (&inv, &p1, &p1);
               if (fabs (p0.z - p1.z) < 1.f / 4096)
                 continue;
 
@@ -9547,9 +9547,9 @@ gtk_widget_compute_bounds (GtkWidget       *widget,
     }
 
   gtk_css_boxes_init (&boxes, widget);
-  graphene_matrix_transform_bounds (&transform,
-                                    gtk_css_boxes_get_border_rect (&boxes),
-                                    out_bounds);
+  gsk_matrix_transform_bounds (&transform,
+                               gtk_css_boxes_get_border_rect (&boxes),
+                               out_bounds);
 
   return TRUE;
 }